package com.gopay.common.user.dao;

import java.io.Serializable;
import java.util.List;

import com.gopay.common.base.dao.BaseDAO;
import com.gopay.common.domain.UserInfo;
import com.gopay.common.domain.dc.DcUserCardInfo;

/**
 * UserInfoQuery DAO接口
 * 
 * @UserInfoQueryDAO.java
 * @author liuxin
 * @2013-1-5 上午9:48:38 www.gopay.com.cn Inc.All rights reserved.
 */
public interface UserInfoQueryDAO extends BaseDAO<UserInfo, Serializable> {

    /**
     * 根据给定Email地址查询UserInfo
     * 
     * @param email
     *            给定Email地址
     * @return
     */
    UserInfo getUserInfoByEmail(String email);

    List<UserInfo> getByCustId(String custId);
    
    UserInfo getUserInfoByMobile(String mobile);
    /**
     * 指定的Email和操作员Id、密码查找用户,用于用户登录
     * @param email
     * @param oprId
     * @param pwd
     * @return
     */
    UserInfo getUserInfoByEmailAndOprId(String email,String oprId);
    
    /**
     * 获取所有因密码输入次数过多锁定，或密码问题输入次数过多锁定的客户
     * @return 密码输入次数过多锁定，或密码问题输入次数过多锁定的客户对象
     */
    List<UserInfo> getPasswordLockedStatusUser();
    
    /**
     * 获取企业管理员对象
     * @param custId
     * @return UserInfo对象
     */
    UserInfo getCorpAdminUserInfo(String custId);
    
    /**
     * 指定的custID和操作员Id、密码查找用户,用于用户登录
     * @param email
     * @param oprId
     * @param pwd
     * @return
     */
    UserInfo getUserInfoByCustIDAndOprId(String custId,String oprId);
    /**
     * 
     * @param custId 客户编号
     * @return 动态口令状态
     */
	public DcUserCardInfo getDynamicPassword(String custId);
	
	/**
     * 
     * @param status 动态口令状态  0 正常  1锁定
     * @return
     */
    public int updateDcUserCardInfo(String status,String custId);
    /**
     * 
     * @param custId 客户ID
     * @param newConsoleLockStat 动态口令状态
     */
	public void addDcUserCardInfoBean(String custId, String newConsoleLockStat);

	UserInfo getBySSoId(String ssoId);
	
    /**
     * 更新该账户号全部用户来源
     * @param custId 客户ID
     * @param userSource 客户来源
     */	
	public void updateUserSource(String custId,String userSource);

	UserInfo getUserInfoByUserId(String userId);


    /**
     * 根据custId查询企业用户管理员userInfo或者个人用户的userInfo
     * @param custId
     * @return
     */
    public UserInfo getCorpAdminorPerUserInfo(String custId);
}
